关于equals和"=="
来源:百度知道 编辑:UC知道 时间:2024/06/21 12:47:33
大家都知道,对于对象来说..equals()对比的是对象的内容..而"=="对比的是对象的引用,这个一般为false..我就试了一下.下面是我的代码..两个源文件
Value.java:
public class Value {
int v;
}
Equals_Demo.java:
package equals;
public class Equals_Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1 = new Integer(56);
Integer i2 = new Integer(56);
System.out.println("i1 == i2:" +'\t'+ (i1 == i2));
//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));
//比较对象的内容
i1=44;i2=44;
System.out.println("当i1=44,i2=44后");
System.out.println("i1 == i2:" +'\t'+ (i1 == i2));
//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));
//比较对象的内容
System.out.prin
Value.java:
public class Value {
int v;
}
Equals_Demo.java:
package equals;
public class Equals_Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1 = new Integer(56);
Integer i2 = new Integer(56);
System.out.println("i1 == i2:" +'\t'+ (i1 == i2));
//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));
//比较对象的内容
i1=44;i2=44;
System.out.println("当i1=44,i2=44后");
System.out.println("i1 == i2:" +'\t'+ (i1 == i2));
//比较对象的引用
System.out.println("i1.equals(i2):" +'\t'+ i1.equals(i2));
//比较对象的内容
System.out.prin
Integer 如果小于128 则比的是值
如果大于等于128 则比的是引用。
public static void main(String atgs[]){
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a ==b);
System.out.println(c ==d);
}
你运行下就知道了。
----------------------
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。
当equals为true时,==不一定为true;
equals 比较的是两个值的内容。
== 比较的是两个值的内存地址。
你可以查看JDK原文件,你会发现在Object类中,==和equals是一样的,其子类重写了equals方法,才有了差别,具体您可以看源文件,就在JAVA安装路径的src.zip文件里面